﻿using System;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.InteropServices;

namespace Microsoft.Office.OneNote.Interop
{
    /// <summary>
    /// Specifies the scope of a GetHierarchy call.
    /// </summary>
    [Serializable]
    [Guid("97CB5BF9-BF0C-47E5-A9BB-6B189BCA3C25")]
    public enum HierarchyScope : int
    {
        /// <summary>The specified hierarchy node</summary>
        Self = 0,

        /// <summary>The specified hierarchy node and its children</summary>
        Children = 1,

        /// <summary>All of the hierarchy from the specified node until the notebook children (inclusive)</summary>
        Notebooks = 2,

        /// <summary>All of the hierarchy from the specified node until the section children (inclusive)</summary>
        Sections = 3,

        /// <summary>All of the hierarchy from the specified node until the page children (inclusive)</summary>
        Pages = 4,
    }

    [Serializable]
    [Guid("65D0EDAB-9D2F-479C-81C2-E0B481734320")]
    public enum CreateHierarchyType : int
    {
        None = 0,
        Notebook = 1,
        SectionGroup = 2,
        Section = 3,
    }

    [Flags]
    [Serializable]
    [Guid("8E4BA554-9AC4-4E7B-B6E6-39705192F8D1")]
    public enum PageInfo : int
    {
        // Basic types
        Basic = 0,
        BinaryData = 1,
        Selection = 2,

        // Masks
        BinaryDataSelection = BinaryData | Selection,
        All = Basic | BinaryData | Selection,
    }

    [Serializable]
    [Guid("B6876F11-4F18-4913-BF40-7698D08C791D")]
    public enum PublishFormat : int
    {
        OneNote = 0,
        OneNoteArchive = 1,
        
        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")]
        Mhtml = 2,
        
        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")]
        Pdf = 3,

        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")]
        Xps = 4,
        Word = 5,
    }

    [Serializable]
    [Guid("2A0B42F4-2F24-4392-A800-F0A979424A57")]
    public enum SpecialLocation : int
    {
        BackupFolder = 0,
        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Unfiled")]
        UnfiledNotesSection = 1,
        DefaultNotebookFolder = 2,
    }

    [Serializable]
    [Guid("AAE363E2-3D91-4B0C-9021-EFDA0ACBD858")]
    public enum OneNoteAddInEvent : int
    {
        Navigation = 0,
        HierarchyChange = 1,
    }

    [Serializable]
    public enum NewPageStyle : int
    {
        Default = 0,
        BlankPageWithTitle = 1,
        BlankPageNoTitle = 2,
    }
}
